In traditional routing networks, data packets are cached and forwarded downstream. If a routing node receives two packets from two or more sources, it forwards them one after another in a queue. This requires separate transmissions for every message delivered, which decreases network efficiency. Network coding was developed to overcome this efficiency problem by merging messages through an encoding algorithm and forwarding the accumulated result to the destination, where it is decoded using the same algorithm. Network coding thus improves transmission efficiency by combining (encoding) several packets together and sending only the resultant encoded packet.
The extent of throughput improvement and transmission efficiency in network coding systems depends highly on the network topology and the frequency and severity of bottlenecks. Network coding is generally more useful in wireless mesh networks, messaging networks, storage networks, multicast streaming networks, file-sharing peer-to-peer networks and other networks, where the same data needs to be transmitted to a number of destination nodes. Regular peer-to-peer networks do not generally benefit as much from network coding as it complicates network synchronization, and the nodes may need a large amount of processing time while trying to decode data, which may outweigh the bottleneck issue. Thus, large networks can increase their efficiency through the use of network coding, but high overhead costs may make it less viable for small networks.
Besides topography limitations, network coding poses several other significant challenges. These include the need to maintain synchronicity among the nodes, and another is that the loss of one packet in the network can cause several losses at the receiver, and any loss in data can cause big delays since data cannot be recovered until all the information necessary is received by the nodes. Perhaps the biggest disadvantage with network coding is in applying it to heterogeneous networks having both network coding (NC) nodes and non-NC nodes. Any NC packets sent to non-NC nodes will be dropped by these nodes since they are not recognized as valid network traffic and cannot be decoded. Thus, use of NC protocols in non-fully NC networks will result in packet loss since the non-NC nodes will drop packets. What is needed therefore, is a network coding system that eliminates packet loss in networks having both NC and non-NC nodes.
The subject matter discussed in the background section should not be assumed to be prior art merely as a result of its mention in the background section. Similarly, a problem mentioned in the background section or associated with the subject matter of the background section should not be assumed to have been previously recognized in the prior art. The subject matter in the background section merely represents different approaches, which in and of themselves may also be inventions.